Okay, mpMUD ought to have a change log. Here it is. Starting at "version 3", the persistent world.

March 1, 2001
  * Implemented socials: added MSocials, 'socials' command in miscooc.mod, and hooks in cmd_match and cmd_execute.
  * Changed desc_in_room so that "x is sitting on y" uses separate colors for "x is sitting" and "on y".
  * Tweaked MConnection character creation text to account for required password entry.
  * Implemented it/them/they/him/her/etc. Possible improvement: make him/her/it/them apply only to the last object mentioned _of that gender_.
March 2, 2001
  * Implemented 'switch' and 'return'. Changed MConnection::link_to_object so it properly handles the connection being already linked to an object.
  * Implemented 'help social:foo'
March 9, 2001
  * Added call to localize_field('contents') to remove_contents to mark object dirty for DB purposes.
March 10, 2001?
  * Started writing MEvent
March 12, 2001
  * Finished MEvent and MEvent::Message. Scheduler still needs to be modified to handle events.
  * Converted the command prompt routine to call_hooks('prompt_info') for state info
  * Removed multi-coloring of "is sitting> <on a chair> <here" message
  * Changed "disturbed look" message to "[ <self> has connected. ]".
  * Disabled "DB: Reading chunk" log message because mudlog() accesses the DB, causing a possible infinite recursion.
  * 'call' in powers.mod now supports (..) to quote the object name.
  * Reformatted account menu slightly
  * Fixed prototype selection for guests
  * Added '!' command recall
March 13, 2001
  * object_find understands -s / -es
  * weight changes and total_weight are back
  * added skills.mod, weightlimit.mod
  * Fixed object_find returning an invalid MObjectRef if 'it' didn't exist
  * Whole lot of things pointed out by Glenn, including:
    * "the"/"an" command
    * "." as command separator
    * Get does more checking
    * Players are strong enough to carry other players
March 14, 2001
  * Renamed roomexits.mod to exits.mod
  * Implemented "junk prefixes" for commands - words that if found, are removed before the command's code sees it.
  * Made 'drop' let you drop things elsewhere (aka 'put').
  * Made 'get' let you get things from other things.
  * Fixed bug in object_scan that was making no_self_contents not work.
  * Added 'remove' as synonym for get/take. When wearing is implemented, get will have to be modified to include 'un-wearing'.
  * New players get 'owner' field of -1
  * '@select new' and 'new' get 'owner' field set to the caller
March 15, 2001
  * Added help to many commands.
  * Made 'get' check for container being closed.
  * desc_in_room does plurals for glance_contents containers.
  * Implemented idle timeouts for connections, with 10-second warning and different values for different states
March 20, 2001
  * Oops, I haven't been keeping this up to date. What I did today:
  * extracted combine-similar-objects code into sub pluralize{}
  * Cleaned up attach/detach code in connections, added hooks for same
  * Combined code for look-in-room and look-at-object
  * Rewrote desc_in_room to be more general
  * Fixed exit look_extra_info hook to return () instead of ''
  * Implemented open, close, lock, unlock for objects; disabled exit open/close in preparation for objectifying exits
March 21, 2001
  * Pager now erases prompt before sending next page, if terminal type is /^VT/
  * Look now does 'look at' style if target is your container and is glance_contents.
March 24, 2001
  * New players now can't be created without passwords; old players without passwords are forced to choose one.
March 26, 2001
  * Implemented Telnet SUPPRESS-GO-AHEAD option.
March 27, 2001
  * MConnection::Telnet:
    * Times out in 'wait' state waiting for terminal type response.
    * When exiting 'wait' state, uses SUPER::initial_state() instead of 'login'
March 28, 2001
  * Added 'list' command to list visible objects
  * Moved event saving from individual objects into 'events' file. This means that on a reboot, events will occur immediately instead of when their object is loaded. Also, non-owned events are saved (not sure if this is useful.)
  * Locks check 'key_shape' field of key instead of 'prototype'
  * Two input line continuation methods implemented:
      foo\
      bar\
      baz
    or
      foo\\
      bar
      baz
      //
    The \\// form is designed for Rapscallion editors.
  * Tweaked 'look' to indent first line of all paragraphs of a description, rather than just the first paragraph.
  * In object_find, 'all' by itself will now never return objects in glance_contents containers.
  * Speech: expands 'u' and 'r', can't say empty string, nothing but punctuation results in a mumble.
  * 'who' list no longer shows exact set of privileges.
April 1, 2001
  * 'who' list shows idle time if over 5 minutes
  * Rewrote interior weight change notification to send only one message for multiple changes happening in the same main loop iteration 
  * Transferred 'give' and offers system from v2. It really needs a redesign.
April 3, 2001
  * "/" is legal before all commands for IRC/graphical-ORPG compatibility
  * "me" aliases to "emote"
  * Added talk mode, unrecognized commands as speech option
April 4, 2001
  * Object names in "look" are highlighted purple, and voluntary_carry distinction is gone.
  * Added ucfirstl() function to MCoreTools, which uppercases the first word-character instead of the first character.
  * Help can be requested for command aliases.
  * Replaced several informational commands with "show" command.
  * Got webserver module working again.
  * Added marked_obj_refs connection preference (needs improvement)
April 5, 2001
  * Added 'clone' command.
  * Added parse_error function to MCoreTools - extracts original error message text from $@
  * object_find, when parsing 'and', won't abort if one of the objects is missing
  * New option for unrecognized commands to be turned into speech. Also does this if the first letter is uppercase.
  * no_drop, is_tag
April 10, 2001
  * Minor tweak to MCoreTools::mudlog - $single isn't computed unless necessary.
April 12, 2001
  * Implemented blocking IO in MConnection/MConnection::Telnet/MScheduler.
  * Had to rework idle timeouts into events.
  * Events can have non-MObject owners.
  * Non-blocking output on sockets.
  * MScheduler::report now uses the new variable-width column display I made for 'connections' command
  * Fixed bug in Telnet support: SB handler wasn't removing last byte (SE) of subnegotiation sequence from tel_buffer.
  * Ignores SIGHUP
April 13, 2001
  * Removed 'info' command
  * Moved MConnection::Telnet and webserver.mod select()s into new MIOManager.
  * Created MConnection::Std, allows connection to STDIN/STDOUT
  * Added command-line options, modified mrun_mac to prompt for options
  * mpMUD.pl loads most M* modules at run-time
April 14, 2001
  * Added reason descriptions to ->disconnect()s that didn't have them
  * When objects are loaded from the DB, the 'connection' field is now restored.
  * MConnection::Std is no longer capable of producing ANSI color commands
  * New MInitializable module to support modules declaring prerequisites instead of requiring mpMUD.pl to load everything in the proper order.
April 16, 2001
  * select_proto connection state accepts abbreviations
  * Character deletion doesn't crash if the body hasn't been created yet.
April 18, 2001
  * 'use integer' in MConnection
  * Added MConnection->flush() before MConnection->all->disconnect() in shutdown code.
  * Connections schedule events to flush themselves instead of it being done for all connections in the scheduler loop.
  * Removed reset_me from MScheduler; now MEvents handle their own rescheduling.
  * Added IS_MACOS constant to MCoreTools to allow the compiler to optimize out OS checks
  * Entering commands in paging state was causing page line buffer to be erased
  * Added verbose_startup config option
April 19, 2001
  * Fixed bug in dg_escape: it wouldn't work on two escapable chars in a row
  * Added 'dumpx' command: like 'dump' but dumps an expression instead of a world-object
  * MConnection::disconnect now turns the dead connection into a MConnection::Nil
  * Removed a lot of unnecessary 'use's and trimmed the imported symbols of the necessary ones.
  * MConnection::disconnect takes a second parameter: boolean indicating if there was an error (i.e. don't flush buffers)
April 20, 2001
  * 'no integer' in MConnection::format_multicol
  * fixed bug in backspace handling
  * fixed bug in MScheduler: event record's owner field wasn't set through _owner_id
April 22, 2001
  * Beginning deletion of %ENV was using for (%ENV) instead of for (keys %ENV)
April 25, 2001
  * Wrote MDefList.pm
  * Modified MObject::CommandInterpreter to use definition lists
  * Added MModules::ModuleContext::Define()
  * Moved socket writing code in MConnection::Telnet from send_str_raw to new send_to_socket routine
  * Made core.mod's object aging hook a but more efficient
  * Polished up sysread/syswrite error handling: better error messages, now knows every possible error
  * Rearranged MConnection::Telnet and added section headers
  * Added no_parse_args command option to replace hardcoded test in MObject::do
  * Added definition lists for fields, methods, and verb definitions
  * @view now highlights overridden fields; added MObject::has_val to support this
April 26, 2001
  * Renamed 'dumpx' to 'evald'
  * Added "validators" to MDefList
  * MCoreTools now uses a connection preference to decide whether to send log messages instead of an object field; prevents reentrancy from logging DB messages, and allows receiving log messages when not attached, and helps with the "move privileges out of DB" goal
April 27, 2001
  * Objects can have multiple containers
  * Object exits:
    * Entering a two-container object causes you to continue through to the other container.
  * Cleaned up main loop.
  * Began implementing socials as a module, thanks to the new definition list system.
  * Added 'blessed' function to MCoreTools; checks if a thingy is an object and if so, whether it is blessed in a certain package.
April 30, 2001
  * Created MXML
  * Created sact()
  * MConnection tweaked to handle structures
May 1, 2001
  * Created MXML::sx2ansi
  * When removing events, the scheduler now marks them "dead" instead of scanning the event queue and removing them immediately. This helps scalability.
  * Created MTerminal::ANSI and MTerminal::XML, modified MConnection to use them
  * Converted 'who' to SX
May 2, 2001
  * Converted 'commands' to SX, added 'cols' attribute to 'list' element.
May 8, 2001
  * Removed marked_obj_refs preference
May 10, 2001
  * Combined connection enter/input/prompt handlers, noecho flag, timeout into one state table
  * Added deflist for states
May 11, 2001
  * Moved connection states into connections.mod
  * Fixed minor bug in webserver proxy connection attachment.
May 20, 2001
  * MObject::CommandInterpreter now uses tries for command lookups instead of linear searches
  * MObject::CommandInterpreter now has a more flexible system instead of the "GenericVerb" thing
  * desc_gen understands both {} and <>
May 21, 2001
  * Added MFreezer::thaw_from_file() and MCoreTools::rexists()
  * Began to implement persistent deflist items
May 22, 2001
  * Completed persistent deflist implementation
May 23, 2001
  * Moved nphr, GenericVerb, and do_verb methods and name-related fields out of MObject into modules
  * Removed 'connection' object field, replaced it with hash kept in MConnection; this eliminates the need to restore the connection field when thawing from the DB, and allows multiple connections to one object.
  * Modified 'look' to use SX.
  * Added 'detail', 'line', and 'p' SX elements.
May 24, 2001
  * MTerminal::ANSI now calls send_str instead of send, and calls con->needs_prompt; this is in preparation for moving all of the prompt logic into MTerminal::*.
  * Command interpreter now sends (to originating connection only) the return value of a command, if it's defined.
  * mudlog() uses SX when sending log messages
  * MTerminal::ANSI, if paging its output, looks for a 'title' element and uses that for the paging title
May 25, 2001
  * Changed mudlog to not send messages to connections until the next event loop cycle
May 26, 2001
  * Moved implicit field accessor functionality out of MObject into MObjectRef; this removes a layer of indirection in lib code, and prevents pollution of the &MObject:: namespace.
  * Moved module method functionality out of MObject into MObjectRef; see above for why.
  * More progress on converting to SX: fixed bug in pluralize()
May 28, 2001
  * Removed "basic command" feature, as it is easily replaced by command aliases
  * Modified cmd_match to produce an error if an abbreviation is ambiguous
  * Prompts are now handled in part by MTerminal::*.
  * Fixed bug in sx2xml that was causing entities to be double-escaped: "&amp;apos;". Solution: Substitute & > &amp; before all other substitutions
May 29, 2001
  * Moved most prompt handling into MTerminal::ANSI. What to do about MTerminal::XML is still under consideration.
  * Changed monitor to be a stack
  * Separated output flushing and prompt sending into two events.
  * Added MCoreTools::GetObj()
  * Created MUser, moved account management into it. Still need to clean up relationship between MUser, MConnection::Interface and connections.mod
May 30, 2001
  * desc_gen produces SX
  * Added 'ucfirst' SX element. Processed by MTerminal::ANSI, and used in nact()
  * Removed MCoreTools::ucfirstl() since it no longer applies
  * Changed 'look' to handle SX descs
  * changed desc_in_room to use [ucfirst] element
  * Changed webserver to access MUser for authentication
  * Changed MConnection to always call terminal's output sub once, even if the input got processed into multiple nodes
  * Fixed bug in _dg_field: it was calling MObjectDB->get_real
  * 'sdesc's can now use the label 'in', which is the object's container.
  * Removed __dirty sub from MObject, added MObjectDB->changed
  * Renamed localize_field to mutable_val and made it return the field
  * Removed MConnection methods: scr_width, scr_height, login_name, format_wrap, format_multicol, send_multicol
May 31, 2001
  * Moved all MXML:: subroutines into MCoreTools and deleted MXML.pm
  * Made <list cols=yes> the default
  * Changed MTerminal::ANSI to print the prompt immediately if it's different from the previous one.
  * Added xml2sx and xml2sx_file to MCoreTools
June 1, 2001
  * MDefList should now be able to handle a list being added to another list explicitly, rather than the implicit 'into'.
  * Added 'DefinePersistent' sub for modules, defines a persistent item.
June 3, 2001
  * Removed overloading from MObjectRef because profiling showed it to be extremely slow
June 4, 2001
  * Tweaked MObjectDB to be a bit faster by eliminating unnecessary method calls
  * MObjectRef: Autoloaded methods are no longer closures
  * Tried to speed up MObject::get_val
June 6, 2001
  * Added DB_File hash to handle 'names' for objects as a replacement for indexes
  * Switched prototypes over to names
  * object_find() now has '$name' syntax to look up names
June 8, 2001
  * Added several more socials
  * Removed multiple container code from containment.mod
June 10, 2001
  * New element 'acti', new deflist 'Actions', beginning of code in MConnection's _process_sx, all in preparation for new action description system
June 11, 2001
  * New deflist 'Elements', for lib defining info about sx/xml elements, right now MConnection checks it for postprocessing in _process_sx.
  * desc_gen parser improved: now parser when called, takes a set of characters that terminate parsing
  * desc_gen supports args for fields: <self.is(<some_other_object.id>)>
  * core.mod defines <acti> to call desc_gen using the string from the Actions deflist
  * move_into sact()s with an [acti] element
  * objects.mod defines dg strings for 'get' and 'drop'.
June 13, 2001
  * Removed MIndex
  * Moved all player management out of MConnection::Interface
June 15, 2001
  * Fixed minor bug in command interpreter: aliases couldn't be abbreviated because the results of the trie match weren't being looked up in %Words (which stores the real command name for an alias).
June 16, 2001
  * Moved output-related code in modules to new 'output.mod'.
  * Moved some SX output processing into subs in Elements deflist
  * MConnection::_process_sx understands namespaces better
  * Added warning for when MConnection::send is called with a plain text string.
  * Moved all of _process_sx into send.
  * Interpreter
    * cmd_match now expects the complete line, not parsed into cmd/args
    * 'special_command' hook gets passed complete results from cmd_parse
    * Events returned from special_command are no longer modified to include args
June 17, 2001
  * Fixed bug in MConnection: setstate called terminal->needs_prompt before calling state entry handler, which caused problems, e.g. 'select_gender' state
  * dg__parse modified for two new tags: <v:SUBJLABEL:VERB>, and <e:ESCAPE>
June 18, 2001
  * Removed @RestartArgs feature due to security concerns
June 20, 2001
  * Added lock/unlock/locked methods to MObject
  * Modified editing.mod to use a connection preference for storing current edit target
  * Cleaned up editing.mod's prettyprinter
  * Added @lock and @unlock commands
June 21, 2001
  (I forgot to update the change log on this day, so this has been added on June 22, so it's a bit vague.)
  * Support for symbolic objects:
    * Added 'type' field
    * object_scan will return symbolic objects if requested
June 22, 2001
  * Something I did yesterday was causing a crash during login, apparently in 'look'. A change to pluralize() prevented the crash. I had done $aref->[2..$#$aref] instead of @{$aref}[2..$#$aref]. It's disturbing that this would cause Perl to crash, especially in both 5.004 and 5.6.1.
  * list, li, strong, em, weak, and some other elements are now deprecated, use equivalent HTML elements, e.g ['html:ul'...]
June 23, 2001
  * dg_field has been eliminated; viewpoint has been moved into postprocessing for <obj> SX element. This will enable using desc_gen only once for multiple viewpoints.
  * OutProcess handlers get passed the recursor sub as the third argument.
  * 'if' element has been redefined so it expects up to three child elements: <test> <then> and <else>. What goes in them should be obvious.
  * In MObject::CommandInterpreter, made cmd_allowed, cmd_parse, and cmd_split local subroutines instead of methods
  * In output.mod, dg__parse is now a local subroutine
  * Moved 'nphr' method from core.mod to output.mod
  * In output.mod, the dg object label 'viewer' is special and gets passed thru to the SX without ever being a specific object
June 24, 2001
  * Major changes to web server module to make it more extensible and more efficient.
  * MTerminal::ANSI supports HTML tables.
June 27, 2001
  * MTerminal::ANSI supports user stylesheets via 'ansi_style' connection pref
  * in desc_gen verb tags, the object label is now optional, in which case it uses the label of the tag immediately preceding it, e.g. <self> <v:smiles>. Note that <foo.used?<foo>:<bar>> <v:baz> will DWYM.
  * Added 'date' command'.
  * Changed 'evald' to be just 'eval' and removed old 'eval' command.
June 28, 2001
  * special_command hook now takes an extra argument, the connection.
  * MTerminal::ANSI
    * Fixed bug in table handling
    * Recognizes several html:class= keywords, specifically 'layout', 'compact' and 'linear' for html:ul. 'layout' means no bullets, 'compact' means comma-separated, and 'linear' means no multicolumn display.
June 29-30, 2001
  * Added support for plain subroutines defined by modules, via Subs deflist.
  * Turned desc_gen and dg_escape into subs, since they no longer need to know the viewpoint.
July 1, 2001
  * Table support in MTerminal::ANSI is more complete: handles multiline table cells.
  * MScheduler->report returns just the data instead of a SX structure.
  * New XML tag: <division/>. Equivalent to <html:hr/> but the second isn't implemented as I feel it's too presentational.
  * output.mod:
    * new sub dg_send, essentially nact() for one object.
    * nact is now just a wrapper around sact.
  * Tweaked MConnection::Telnet to handle weird situation under MacPerl where accept() or read() returned 0 and also $! == 0.
July 2, 2001
  * Began new help system, defined entirely in 'help.mod'. Disabled MHelp.pm.
  * Command aliases can now be specified as part of the command definition.
July 3, 2001
  * MObject::cmd_match now takes an extra option, 'no_special', to disable special command matching. This is to support the new help system.
  * Converted all command aliases from separate deflist to their respective command definitions.
July 20, 2001
  * Eliminated world to prepare for switching over to coordinates etc.
  * Privilege flags moved into users.
  * MObjectDB executes config/seedworld.pl if there's no world.
  * Command interpreter:
    * cmdi_* methods deleted
    * commands_for_display now needs connection as an argument. as it doesn't need a world-object now it ought to become a sub or connection method.
  * prompt_info hook gets connection as second argument
July 21, 2001
  * MObjectDB adds a field '_creation_time'.
  * Created MTransaction.pm - right now it only stores context info
  * MObjectRefs are now arrays of [obj id, creation time] and pretend the object doesn't exist if the creation time doesn't match
  * MCommandInterpreter wraps command execution in a transaction
July 26, 2001
  * Fixed bug in MTransaction.pm - getContextItem was modifying its arguments when it shouldn't have been.
  * MDefLists created with Define() get their contents preserved across module reloads.
  * Command interpreter moved into !commands.mod
  * New deflist 'Etc' for module data; new subroutine 'Etc' as convenience for modules to work with that list.
  * Moved parse_time, format_time, dice from MCoreTools to core.mod
  * MConnection: 
    * No longer destroys objects for connections that have a login_name of 'guest'.
    * attach/detach methods both take an 'extra' parameter that is passed to the 'con_attached'/'con_detached' hooks.
  * Modules:
    * 'menu' connection state eliminated; its functions are now handled by the command interpreter and the 'command' state.
July 31, 2001
  * Various changes to the login sequence
  * Command interpreter understands option flags (cmd -opt or cmd/opt)
  * deflist.mod no longer puts current path in prompt
  * Fixed bug in MConnection: 'user' method would return () in list context instead of undef.
August 1, 2001
  * MObjectDB::get returns a MObjectRef that includes the creation time.
August 2, 2001
  * object_find supports 'myself'
August 5, 2001
  * MScheduler executes events inside a transaction and eval()
  * MEvents no longer catch exceptions
  * MEvent has a new method - 'description' for a textual description of what the event does
  * MScheduler will use the description if an event has no name
  * Modules are now no longer re-evaled on unload
  * If a module fails to load partway through, any deflist items added will be removed.
August 6, 2001
  * @name / @unname ignore '$' preceding argument
  * Log messages use xml:space='preserve'
  * Implemented duplicate message detection in mudlog()
  * get_val now deep-copies values
  * *_val are now *Attr
  * MFreezer::clone is now guaranteed to work on non-reference values
  * Renamed MCoreTools::GetObj to MCoreTools::ObjectByID
  * Added MCoreTools::ObjectByName
  * Added MObjectDB->names
  * exits attribute stores MObjectRefs instead of object ids
  * MCoreTools::sx2xml no longer allows MObjectRefs in the SX
  * Moved 'freeze' and 'thaw' MObject methods out of core
  * Removed 'call' method
  * Updated MConnection::Nil's methods
  * Commented out old nonfunctional pager and line-wrapper code in MConnection.
August 7, 2001
  * Moved 'blessed', 'min', and 'max' out of MCoreTools.pm
  * Deleted unused 'sx_process' subroutine
  * Tweaked sx2xml for efficiency
August 8, 2001
  * Added 'wrecent' for recent logins graph as described in ideas, currently using fake data because I haven't added the necessary hooks yet
August 9, 2001
  * Added 'Require' sub in module context to specify dependencies in modules
August 10, 2001
  * as_ref is no longer accessible from lib
  * objects.mod: desc_in_room supports arbitrary complements
  * Bug in Define() was preventing preservation of deflist contents
  * Gradually changing mentions of 'field' in documentation to 'attribute'
  * Eliminated nonfunctional object grouping system (pluralize method, usage of it)
  * ACK! Bug in getAttr: default value was not getting deep copied when returned!
  * nphr_for_look eliminated; desc_in_room less dependent on viewpoint
  * Fixed nasty bug in object_find: test for 'and' or ',' wasn't looking for word boundaries on 'and', but the split was, resulting in an infinite recursion if a word containing 'and' was entered.
August 11, 2001
  * MDefList::values wasn't working
  * Wrote code to generate that ANSI 'about' text automatically
  * 'group' element eliminator now works properly; having it disabled was causing the problem with desc_gen <a.is(<b.viscontext>)> not working right.
  * MModules::unload_module wasn't clearing the unload list, resulting in occasional glitches in reloading a module.
  * MObject::dispose renamed to 'destroy'
August 12, 2001
  * MScheduler::mudclock deleted
  * MScheduler::add_event no longer takes any parameters
  * MEvent rescheduling should now work properly across restart
  * 'Methods' deflist moved into MObjectRef
  * MObject::destroy cleaned up
  * MConnection::send, in processing SX, no longer implicitly processes child nodes of the node(s) returned by the /Elements processsing hooks.
  * Added MScheduler::clock_localtime
August 14, 2001
  * Moved ANSI splash screen from config file into module
  * Implemented data collection for 'wrecent' command
  * MIOManager schedules events instead of directly executing them
    * LATER NOTE: I took this out - why?
  * Method 'ref_as_string' of MObjectRef
  * MObjectRef::new renamed to MObjectRef::ref_new
August 15, 2001
  * Added 'privilege' and 'privset' commands
  * Talk mode uses 'chat' command if you haven't attached
  * 'whoami' command gives user and body info
August 16, 2001
  * MConnection calls default_connection_prefs hook
  * MConnection::send processor didn't correctly handle non-arrayref/text/MObjectRef nodes
  * wrecent can put seconds in the time scale
  * option parsing can be disabled with no_options command struct key
  * locked objects can't be destroyed
August 18, 2001
  * Rearranged 'who' to be a bit simpler, and show idle times for guests
  * echo uses <user> element
  * Speech filter controllable by preference
  * desc_gen no longer does implicit <self?> and escaping
  * nphr method no longer takes a count parameter
  * Guests reveal their connection ID to make identification possible
  * New bodies get an action desc on entering
  * Modernized 'new' command, renamed it to 'create', and added a feature to allow immediate naming.
  * Tweaked MObjectDB::get_real to be faster, properly update %ChunkLastAccess, and not produce uninitialized value warnings upon certain requests for a nonexistent object
August 19, 2001
  * MConnection::handle_input checks if the connection has become nil after processing the input.
  * Fixed bug in MConnection that was preventing echo mode from being set properly
August 20, 2001
  * New connection preference 'show_channels' - hides chat
August 23, 2001
  * MTerminal::ANSI does line wrapping
  * Module context sub 'Unloader': registers arbitrary unloading code
  * commands.mod handles 'special_command's correctly
  * webserver.mod fixed to work in new module system - but it isn't working. debugging...
      There seems to be some sort of timing issue.
August 24, 2001
  * MObject::attribute_info removed; MObject::attributes is no longer a dual method. The information previously accessed through those methods should be found by accessing the /Fields deflist directly
  * Created MInterface.pm. It's not used for anything yet.
August 26, 2001
  * Added 'webserver' log file
August 27, 2001
  * 'advice' connection pref added
  * Connection preference defaults moved from default_connection_prefs hook to PrefDefaults deflist
August 28, 2001
  * editing.mod's $showsub now put into Subs deflist as 'sx_dump_thingy'.
  * 'eval' command uses sx_dump_thingy instead of Data::Dumper.
  * Hopefully eliminated memory leak by breaking circular reference in MConnection::send's recursive closure
August 30, 2001
  * MConnection::Telnet ignores incoming GA and replies WON'T to incoming DO NAWS or DO TERMINAL-TYPE
  * New terminal class 'MTerminal::Mud' for experimenting with gateways between muds
  * MUser keeps times in 'user_last_active' and 'user_last_inactive' attrs
September 4, 2001
  * cmd_match now returns ([cmdname, user-entered-name], ...) instead of just (cmdname, ...)
  * commands can invoke '/Sub's, by the 'code' being "sub:whatever"
  * Added 'othermud.mod' whose job is to provide hints for players of other muds that enter commands mpMUD doesn't have.
  * 'who' command tells you about 'wrecent' if you have advice on and there are fewer than 4 connections.
  * desc_gen no longer supports {} as tag delimiters
  * MTerminal::ANSI no longer treats element html:ul specially; it has a stylesheet entry instead.
September 6, 2001
  * MConnection supports module-defined methods
  * changed cmd_do, cmd_match and cmd_execute into connection methods
September 7, 2001
  * Removed genderNom, genderObj, genderPoss methods from output.mod
  * Added improved pronoun handling
  * added support for viewpoint selection
  * /Elements OutProcess handlers get the connection as fourth argument
September 8, 2001
  * output.mod: pronoun handling improved; gender* parts gone, replaced with *pron
  * missing Require in connections.mod added
September 9, 2001
  * added 'data' feature to MConnection so lib code doesn't poke around inside the object
  * login input handler rewritten; now supports "connect <username> <password>".
  * new 'logout' command
  * 14 FIXMEs fixed
  * mudlog sending to connections is now in lib
  * implemented 'nested input modes'
  * implemented talk mode as a nested input mode
September 10, 2001
  * added attribute-editing nested input mode
  * removed capability in @set and @unset to require certain privileges to set some fields, as it wasn't being used
  * moved @set and @get into one @attr command
  * MObject::getAttr checks for undef argument
  * command option parsing can be terminated by --
  * got viewpoint selection working right and added it to cpref
  * fixed bug in offers system
September 11, 2001
  * SX system tweaked to reduce number of empty elements output
October 3, 2001
  * Eliminated many ->nphr's.
October 4, 2001
  * log element now only uses a single set of []s, log hook adds the second
